/*
 * @Author: 李煌
 * @Date: 2023-04-25 10:34:46
 * @LastEditors: 李煌
 * @LastEditTime: 2023-05-05 16:00:46
 * @Description: file content
 */
import addNode from "../addNode";
export default {
  components: {
    // 解决递归循环依赖的问题
    nodeWrap: () => import("../nodeWrap.vue"),
    addNode,
  },
  props: ["isTried", "value"],
  model: {
    prop: "value",
    event: "input",
  },
  emits: ["openDrawer"],
  inject: ["getFlatRoot", "openDrawer"],
  computed: {
    nodeConfig: {
      get() {
        return this.value;
      },
      set(value) {
        this.$emit("input", value);
      },
    },
  },
  mounted() {
    if (this.value == undefined) {
      throw Error("无绑定v-model 请绑定");
    }
    // if (this.nodeConfig.type != this.$nodeType.条件分支) {
    //   this.nodeConfig.error = !this.vaildError(this.nodeConfig);
    // }
  },
  methods: {
    vaildError(item) {
      return this.$factory.getTypeBeforeSave(item.type, item);
    },
    setApproverStr() {
      if (this.nodeConfig.type === 0) {
        // let baseDetailData = this.$refs.baseDetail.getForm();
        // localStorage.setItem("baseDetailData", JSON.stringify(baseDetailData));
        // this.nodeConfig.nodeDetail = baseDetailData;
      }
      let str = this.$factory.getTypeTextHandle(
        this.nodeConfig.type,
        this.nodeConfig
      );
      return str;
    },
    setConditionStr(item) {
      let str = this.$factory.getTypeTextHandle(item.type, item);
      return str;
    },
    delNodes() {
      let _this = this;
      this.$modal
        .confirm(
          '该操作会删除该节点下的所有节点，确认要删除"' +
            this.value.nodeName +
            '"节点吗？'
        )
        .then(function () {
          _this.delNode();
        })
        .catch(function () {
          _this.$modal.msgError("删除不成功");
        });
    },
    // 删除节点
    // delNode() {
    //   let fatherID = this.nodeConfig.fatherID;
    //   // 还需要更换fatherID 否则删除的时候还会找旧的father节点 如果旧节点被删了呢
    //   if (this.nodeConfig.childNode) {
    //     this.nodeConfig.childNode.fatherID = fatherID;
    //     this.$emit("input", this.nodeConfig.childNode);
    //   } else {
    //     // 处理没有下级的情况 需要拿到Root根节点数据向下找 如果他没上级不操作 有上级移除本级
    //     // 改成平铺后处理就方便了
    //     let flatRoot = this.getFlatRoot();
    //     if (!fatherID) {
    //       throw Error("这个是根节点无法删除！");
    //     } else {
    //       let father = flatRoot[fatherID];
    //       father.childNode = null;
    //     }
    //   }
    //   this.$modal.msgSuccess("删除成功");
    // },
    delNode() {
      let fatherID = this.nodeConfig.fatherID;
      if (this.nodeConfig.childNode && this.nodeConfig.childNode.type === 10) {
        this.nodeConfig.childNode.fatherID = fatherID;
        this.$emit("input", this.nodeConfig.childNode);
      } else {
        // 处理没有下级的情况 需要拿到Root根节点数据向下找 如果他没上级不操作 有上级移除本级
        // 改成平铺后处理就方便了
        let flatRoot = this.getFlatRoot();
        if (!fatherID) {
          throw Error("这个是根节点无法删除！");
        } else {
          let father = flatRoot[fatherID];
          father.childNode = null;
          father.conditionNodes = null;
        }
      }
      this.$modal.msgSuccess("删除成功");
    },
  },
};
